package com.sunnada.poi.excel.base;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;

/**
 * @program: poiextended
 * @description: 基本样式
 * @author: 李瑞益
 * @create: 2018-11-05 15:50
 **/
public class StyleBase {

    private CellStyle titleStyle;
    private CellStyle columnHeaderStyle;
    private CellStyle contentStyle;

    /**设置标题样式*/
    public void setTitleStyle(CellStyle cellStyle){
        this.titleStyle = cellStyle;
    }

    /**设置列头样式*/
    public void setColumnHeaderStyle(CellStyle cellStyle){
        this.columnHeaderStyle = cellStyle;
    }

    /**设置数据内容样式*/
    public void setContentStyle(CellStyle cellStyle){
        this.contentStyle = cellStyle;
    }

    public CellStyle getTitleStyle() {
        return titleStyle;
    }

    public CellStyle getColumnHeaderStyle() {
        return columnHeaderStyle;
    }

    public CellStyle getContentStyle() {
        return contentStyle;
    }

    /**标题所占行数*/
    private int mergeRowCount;

    public int getMergeRowCount() {
        return mergeRowCount;
    }

    public void setMergeRowCount(int mergeRowCount) {
        this.mergeRowCount = mergeRowCount;
    }

    /**
     * 默认的表头样式
     */
    public CellStyle defaultHeaderStyle(Workbook wb){
        CellStyle cellStyle = wb.createCellStyle();
        //设置字体
        Font font = wb.createFont(); //获取字体对象
        font.setFontHeightInPoints((short)16);//设置字体大小(是1/20的结果）
        font.setBold(true); //设置字体加粗
        font.setFontName("宋体");//设置字体
        font.setColor((short)0);//设置字体颜色
        cellStyle.setFont(font);//设置到对象
        cellStyle.setWrapText(false);//自动换行
        //文本居中
        cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
        return cellStyle;
    }

    /**
     * 默认的数据样式
     */
    public CellStyle defaultContentStyle(Workbook wb){
        CellStyle cellStyle = wb.createCellStyle();
        //设置字体
        Font font = wb.createFont(); //获取字体对象
        font.setFontHeightInPoints((short)10);//设置字体大小(是1/20的结果）
        font.setBold(false);
        font.setFontName("宋体");//设置字体
        font.setColor((short)0);//设置字体颜色
        cellStyle.setFont(font);//设置到对象
        //文本居中
        cellStyle.setAlignment(HorizontalAlignment.CENTER);
        cellStyle.setWrapText(true);//是否自动换行
        return cellStyle;
    }

    /**
     * 设置表头合并单元格
     * @param sheet
     * @return
     */
    public Cell setTitleCell(Sheet sheet){
        CellRangeAddress cellRangeAddress = setMergeCell( sheet,0,0,0,2);
//        sheet.addMergedRegion(cellRangeAddress);//将合并的,元格添加到工作簿
        Cell cell = sheet.createRow(0).createCell(0);
        mergeRowCount += 1;//每次合并都计数
        return cell;
    }

    /**
     * 合并单元格
     * @param starRowIndex 开始行索引
     * @param endRowIndex 结束行索引
     * @param startColumnIndex 开始列索引
     * @param endColumnIndex 结束列索引
     * @return
     */
    public CellRangeAddress setMergeCell(Sheet sheet,int starRowIndex,int endRowIndex,int startColumnIndex,int endColumnIndex){
        CellRangeAddress cellAddresses = new CellRangeAddress(starRowIndex, endRowIndex, startColumnIndex, endColumnIndex);
        sheet.addMergedRegion(cellAddresses);//将合并的单元格添加到工作簿
        return cellAddresses;
    }
}
